Turbo code using iterative decoding algorithms has been shown to give a significant performance advantage over existing partial response maximum likelihood (PRML) channels. Turbo Product Code (TPC) with single parity check (TPC/SPC), which belongs to a family of turbo codes, presents the potential for less complex implementations with minimal performance losses. See for example J. Li, K. R. Narayanan, E. Kurtas, and C. N. Georghiades, “On the Performance of High-Rate TPC/SPC Codes and LDPC codes over Partial Response Channels”, IEEE Trans. Commun., Vol. 50, pages 723-734, May 2002. TPC generally utilizes “square” code words (i.e., code words having the same number of rows and columns of bits), with each code word being comprised of square code blocks. An example of a 512 byte (4,096 bit) TPC code word is a code word having four 32 bits by 32 bits code blocks.
When using a TPC (such as a TPC/SPC) to encode data for transmission or storage, it is common to utilize a soft decision algorithm in conjunction with the TPC decoder to iteratively decode the data. Examples of soft decision algorithms include Soft Output Viterbi Algorithms (SOVAs) and Bahl, Cocke, Jelinek, and Raviv (BCJR) algorithms. As the decoding process advances, message data is passed iteratively between the soft decision algorithm and the TPC decoder. The message data can include, for example, all of the code blocks of the code word being decoded, along with probability data and the like. When using soft decision algorithms such as a SOVA, the probability data typically takes the form of log-likelihood values for the various bits of the code word. With each additional iteration, the error rate is typically improved. However, increased iterations come at the expense of increased power dissipation, hardware complexity and data latency.
Embodiments of the present invention provide solutions to these and/or other problems, and offer other advantages over the prior art.